package models

import "time"

// Storyboard 故事板 todo 目前只有一个场景，后面可以考虑多个场景
type Storyboard struct {
	ID          int       `gorm:"primarykey"`
	Name        string    `gorm:"column:name;comment:用户名;not null;unique"`
	Description string    `gorm:"column:description;comment:描述信息"`
	Status      int       `gorm:"column:status;comment:状态机"` // 0: 未开始 101: 进行中 501: 完成 401: 最终失败
	OwnerId     int       `gorm:"column:owner_id;comment:拥有者;index:owner_id"`
	IsDraft     int       `gorm:"column:is_draft;comment:是否是草稿"`
	CreatedAt   time.Time `gorm:"autoCreateTime"`
	UpdatedAt   time.Time `gorm:"autoUpdateTime"`
}

// StoryboardSection TableName storyboards_sections
type StoryboardSection struct {
	ID             int    `gorm:"primarykey"`
	StoryboardId   int    `gorm:"column:storyboard_id;comment:故事板ID;index:storyboard_id"`
	HumanVmId      int    `gorm:"column:human_vm_id;comment:人物资源VM ID;index:human_vm_id"`
	BackgroundVmId int    `gorm:"column:background_vm_id;comment:背景资源VM ID;index:background_vm_id"`
	TextAudioId    int    `gorm:"column:text_audio_id;comment:文案音频ID;index:text_audio_id"` // 后期可以考虑多个文案
	VideoUrl       string `gorm:"column:video_url;comment:视频链接地址"`
	VideoDuration  int    `gorm:"column:video_duration;comment:视频时长"`
	// 0: 未开始 ；101: 进行中 ；201: 语音合成失败；301: 语音合成完成; 401视频合成中；501视频合成失败；601视频合成成功
	Status           int       `gorm:"column:status;comment:状态"`
	OwnerId          int       `gorm:"column:owner_id;comment:拥有者;index:owner_id"`
	VideoCreateTime  time.Time `gorm:"column:video_create_time;comment:视频生成时间"`
	VideoExpiredTime time.Time `gorm:"column:video_expired_time;comment:视频过期时间"`
	CreatedAt        time.Time `gorm:"autoCreateTime"`
	UpdatedAt        time.Time `gorm:"autoUpdateTime"`
}

// TextAudio 表名
type TextAudio struct {
	ID                  int    `gorm:"primarykey"`
	StoryboardId        int    `gorm:"column:storyboard_id;comment:故事板ID"`
	StoryboardSectionId int    `gorm:"column:storyboard_section_id;comment:故事板段落ID;index:storyboard_section_id"`
	TextContent         string `gorm:"column:text_content;comment:文案"`
	TextVcn             string `gorm:"column:text_vcn;comment:选择的语音"`
	TextAudioUrl        string `gorm:"column:text_audio_url;comment:音频链接地址"`
	TextAudioTaskId     string `gorm:"column:text_audio_task_id;comment:音频转换任务ID"`
	Duration            int    `gorm:"column:duration;comment:音频文件时长 单位s"`
	DurationTotal       int    `gorm:"column:duration_total;comment:扣去时长之前用户的总时长 单位s"`
	// 0: 未开始 101: 进行中 201: 最终失败； 301: 语音合成完成；
	Status       int    `gorm:"column:status;comment:状态;default:101"`
	ErrorMessage string `gorm:"column:error_message;comment:错误信息"`
	OwnerId      int    `gorm:"column:owner_id;comment:拥有者;index:owner_id"`

	CreatedAt time.Time `gorm:"autoCreateTime"`
	UpdatedAt time.Time `gorm:"autoUpdateTime"`
}
